草庐IT

objective-c - 构造一个以 nil 结尾的 NSString 列表作为 NSString *

全部标签

ruby-on-rails - 如何从初始化器扩展一个类并在开发环境中重新加载它?

我通过包含一个模块来扩展一个类(在插件中),这是在初始化程序中完成的。require'qwerty/core/user'User.send:include,Qwerty::Core::Extensions::User但是在开发过程中,在每次请求之前(以及在控制台中调用reload!之后)所有模型都会重新加载,但由于初始化器不会再次运行,所以模块不包含在内。留下带有“缺失部分”的模型。因为模型在插件中,所以将代码直接包含在类中似乎不是明智的做法,这将是通常的方法。现在我只是简单地添加了一个before_filter,它包含了开发环境中的模块。但是我有复制/粘贴并且在初始化程序和应用程序C

ruby Rspec。获取所有测试的列表

我在Rspec上做了一些测试,看起来像这样:describe"description"dobefore:eachdodo_before()endit"something_1"do...endit"something_2"do...endend我知道我可以使用获取当前测试的名称(“something_1”)example.description有什么方法可以获取before:each区域中所有描述的数组吗? 最佳答案 rspec-fd--color--dry-runfilename在rspec3.5.2中为我工作,列出所有测试而不运行

ruby-on-rails - 如何为 nil :NilClass error? 修复未定义的方法 `split'

我的Rails应用程序中有以下行:@images=@product.secondary_images.split(",")当@product.secondary_images中有内容时,它运行良好。但是,当没有内容时,我会收到此错误:undefinedmethod`split'fornil:NilClass如果@images中没有内容,我如何给它赋另一个值? 最佳答案 一个可能的解决方案是使用try,如果您的方法无法发送到secondary_images,它会返回nil。然后使用OR运算符分配其他内容。@images=@produc

ruby - 有没有一种优雅的方法来测试一个实例方法是否是另一个实例方法的别名?

在单元测试中,我需要测试是否正确定义了alias_method定义的别名方法。我可以简单地对用于其原件的别名使用相同的测试,但我想知道是否有更明确或更有效的解决方案。例如,有没有办法1)取消引用方法别名并返回其原始名称,2)获取并比较某种底层方法标识符或地址,或3)获取并比较方法定义?例如:classMyClassdeffoo#dosomethingendalias_method:bar,:fooenddescribeMyClassdoit"methodbarshouldbeanaliasformethodfoo"dom=MyClass.new#???identity(m.bar).s

ruby - 是否可以根据单个对象对方法的响应对对象列表进行排序?

我想显示一个产品的画廊,其中包括待售和非待售产品。只是我想让待售的产品出现在列表的前面,而不是待售的对象出现在列表的末尾。我实现此目的的一种简单方法是制作两个列表,然后合并它们(一个列表是on_sale?对象,另一个列表是非on_sale?对象):available_products=[]sold_products=[]@products.eachdo|product|ifproduct.on_sale?available_products...但是对于我现有应用程序的结构来说,由于我的代码中有一个奇怪的地方,这将需要过多的重构(我失去了分页,我宁愿不重构)。如果有一种方法可以通过我的

arrays - Ruby - 测试每个数组元素,得到一个结果

我想要一个返回true/false的单行代码,它测试数组中的每个元素是否为整数。因此,如果数组中的任何元素不是Integer,它应该返回false,否则返回true。这是我的尝试:>>([2,1,4].map{|x|(x.is_a?Integer)}).reduce{|x,result|xandresult}=>true>>([2,"a",4].map{|x|(x.is_a?Integer)}).reduce{|x,result|xandresult}=>false还有其他进一步提炼它的想法吗? 最佳答案 array.all?{|x

ruby-on-rails - 在 ruby​​ 中委派了 nil 属性

由于某些我不理解的原因,我在我的应用程序上运行某个页面时收到此错误消息:Teamplayer#Plyrdelegatedtolive_player.Plyr,butlive_playerisnil:#在这一行:以下是我的Teamplayer模型的设置方式:classTeamplayer这是Liveplayer模型:classLivePlayer这是上面提到的Fteam模型:classFteam我正在尝试从live_player(来自名为live_players的表)获取字段Plyr,但它说live_player是空的。我不确定这是哪一部分是错误的。我正在使用postgresql,但我认

Ruby 1.9 正则表达式作为哈希键

我正在使用ruby1.9.2p136(2010-12-25)[i386-mingw32].它没有按预期工作(编辑:事实证明它不应该像我预期的那样工作):irb(main):004:0>myhash={/(\d+)/=>"hello"}=>{/(\d+)/=>"Hello"}irb(main):005:0>myhash[2222]=>nilirb(main):006:0>myhash["2222"]=>nil在Rubular在ruby​​1.8.7上regex有效。我错过了什么? 最佳答案 你在寻找这种行为吗?myhash=Hash.

ruby - Ruby 中的递归文件列表

我是Ruby的新手(作为Java开发人员)并尝试实现一种方法(哦,抱歉,一个函数),该方法将递归地检索和生成子目录中的所有文件。我将其实现为:deffile_list_recurse(dir)Dir.foreach(dir)do|f|nextiff=='.'orf=='..'f=dir+'/'+fifFile.directory?ffile_list_recurse(File.absolute_pathf){|x|yieldx}elsefile=File.new(f)yieldfileendendend我的问题是:File.new真的打开一个文件吗?在Java中,newFile("xx

ruby-on-rails - 将表示逻辑放在 Controller 中是 Ruby 中的一个好习惯吗?

一些推荐[1]建议你使用代替但问题是您必须在代码中的某处包含决策逻辑。我的理解是将决定放在template中比controller更好,因为它使您的Controller更干净。是否正确?有没有更好的方法来处理这个问题?http://robots.thoughtbot.com/post/27572137956/tell-dont-ask 最佳答案 您不是第一个对此感到疑惑的人。如果View和Controller应该几乎没有逻辑,并且模型应该与表示无关,那么表示逻辑属于哪里?事实证明,我们可以使用一种称为装饰器模式的旧技术。这个想法是用